options results /* indispensable pour récupérer le résultat des macros */
signal on error /* pour l'interception des erreurs */
signal on syntax
'LANGUAGE'
if result="français.language" then fr=1
else fr=0
if fr=1 then 'SELECT("Type de composant à référencer"+CHR(10)+"Résistances"+CHR(10)+"Condensateurs"+CHR(10)+"Diodes"+CHR(10)+"Transistors"+CHR(10)+"Circuits intégrés"+CHR(10)+"Tous les composants"+CHR(10)+"Composants spécifiés")'
else 'SELECT("Component type to reference"+CHR(10)+"Resistances"+CHR(10)+"Capacitors"+CHR(10)+"Diodes"+CHR(10)+"Transistors"+CHR(10)+"Integrated circuits"+CHR(10)+"All the components"+CHR(10)+"Specified components")'
if fr=1 then 'ASKTEXT("Quel est le nom des"+CHR(10)+"composants à référencer?"+CHR(10)+"Vous pouvez utiliser"+CHR(10)+"les jokers(#?) pour"+CHR(10)+"étendre la sélection","")'
else 'ASKTEXT("What is the name of the"+CHR(10)+"components to reference?"+CHR(10)+"You can use jokers(#?) to"+CHR(10)+"extend the selection","")'
type=result
if type='' then exit
if fr=1 then 'ASKTEXT("Quelle est la référence"+CHR(10)+"à donner à ces composants?","")'
else 'ASKTEXT("What is the reference"+CHR(10)+"to give to these components?","")'
reference=result
if reference='' then exit
end
otherwise exit
end
'N=FIRSTSEL'; obj=result
if obj>0 then do
if fr=1 then 'REQUEST("Voulez-vous marquer"+CHR(10)+"uniquement les"+CHR(10)+"objets sélectionnés?")'
else 'REQUEST("Do-you want to reference"+CHR(10)+"only the"+CHR(10)+"selected objects?")'
choix=result
end
else choix=0
'SAVEALL'
call marquer_composant(reference,type,choix)
exit
marquer_composant: procedure
parse arg reference,type,selection
if selection<=0 then do
/* Annulation du marquage éventuel */
'UNMARK(-1)'
/* Marquage et comptage des éléments à référencer */
if type=1 then 'SECURITY(OBJECTS+10):I=0:N=1:WHILE(N<=OBJECTS,IF(TYPE(N)==1,IF(GETDEVS(PARTNAME(N))>0,MARK(N):I=I+1,0),0),N=N+1):I'